static cast:C++ 中的类型转换运算符 static_cast<目标类型>(表达式),用于在编译期可确定且相对安全的类型转换。常见用途包括:数值类型之间转换、指针/引用在有继承关系的类型间进行向上转型(upcast),以及在一些受限场景下的向下转型(但不做运行时检查)。也可用于触发显式构造转换。
(注:它不会像 dynamic_cast 那样进行运行时类型检查,因此不适合不确定真实类型的多态向下转型。)
/ˌstætɪk ˈkæst/
I used static_cast<int>(x) to drop the decimal part.
我用 static_cast<int>(x) 去掉小数部分。
In the class hierarchy, static_cast<Base*>(derivedPtr) converts a derived pointer to a base pointer without runtime checking.
在类继承体系中,static_cast<Base*>(derivedPtr) 可以把派生类指针转为基类指针,但不会进行运行时检查。
static 源自希腊语/拉丁语词根,含“静止的、固定的”之意;cast 源自古诺斯语 kasta,有“投掷、抛出、转换/铸造”的含义。组合成 static cast,在 C++ 语境里指一种“在编译期规则下进行的固定式转换”。作为 C++ 关键字形式(static_cast)随语言标准化而确立,用于替代早期更容易出错的 C 风格强制转换。
static_cast 的规范用法 static_cast static_cast